/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.conf.mbean;

import com.brain.conf.dto.CalendarioFacturacionDto;
import com.brain.conf.dto.CondicionPagoDto;
import com.brain.conf.dto.DescuentoDto;
import com.brain.conf.dto.TarifaDto;
import com.brain.conf.dto.TerceroCuentaBancariaDto;
import com.brain.conf.dto.TerceroDescuentoDto;
import com.brain.conf.dto.TerceroDireccionDto;
import com.brain.conf.dto.TerceroDto;
import com.brain.conf.dto.TerceroPersonaContactoDto;
import com.brain.conf.manager.CalendarioFacturacionManager;
import com.brain.conf.manager.CondicionPagoManager;
import com.brain.conf.manager.DescuentoManager;
import com.brain.conf.manager.TarifaManager;
import com.brain.conf.manager.TerceroCuentaBancariaManager;
import com.brain.conf.manager.TerceroDescuentoManager;
import com.brain.conf.manager.TerceroDireccionManager;
import com.brain.conf.manager.TerceroManager;
import com.brain.conf.manager.TerceroPersonaContactoManager;
import com.brain.core.configuracion.WebServletContextListener;
import com.brain.core.dto.ParametroDto;
import com.brain.core.dto.UbigeoDto;
import com.brain.core.view.mbean.*;

import com.brain.core.exception.DAOException;
import com.brain.core.manager.BitacoraManager;
import com.brain.core.manager.CatalogoManager;
import com.brain.core.manager.ParametroManager;
import com.brain.core.manager.RecursosManager;
import com.brain.core.manager.UbigeoManager;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Indra
 */
@Controller("terceroMBean")
@Scope("session")
public class TerceroMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(TerceroMBean.class);
    @Resource
    private TerceroManager manager;
    @Resource
    private ParametroManager parametroManager;
    @Resource
    private BitacoraManager bitacoraManager;
    @Resource
    private RecursosManager recursosManager;
    @Autowired
    private ApplicationMBean applicationMBean;
    @Resource
    private CatalogoManager catalogoManager;
    @Autowired
    private SessionMBean sessionMBean;
    @Resource
    private CalendarioFacturacionManager calendarioFacturacionManager;
    @Resource
    private TarifaManager tarifaManager;
    @Resource
    private CondicionPagoManager condicionPagoManager;
    @Resource
    private TerceroCuentaBancariaManager terceroCuentaBancariaManager;
    @Resource
    private TerceroDescuentoManager terceroDescuentoManager;
    @Resource
    private TerceroDireccionManager terceroDireccionManager;
    @Resource
    private TerceroPersonaContactoManager terceroPersonaContactoManager;
    @Resource
    private UbigeoManager ubigeoManager;
    private List<TerceroDto> lista;
    private List<UbigeoDto> listaPaises;
    private List<UbigeoDto> listaPaisesFiltro;
    private List<CalendarioFacturacionDto> listaCalendarioFacturacion;
    private List<TarifaDto> listaTarifa;
    private TerceroDto dto;
    private TerceroDto dtoFiltro;
    private String keyEntidad = "key.entidad.terceros";
    private List<ParametroDto> listaDocumentos;
    private List<ParametroDto> listaDocumentosFiltro;
    private List<ParametroDto> listaEstados;
    private List<ParametroDto> listaFormaPago;
    private List<ParametroDto> listaTipoCuentaBancaria;
    private List<ParametroDto> listaTipoMoneda;
    private Boolean camposSegunTipoDocumento;
    private CalendarioFacturacionDto calendarioFacturacionDto;
    private TarifaDto tarifaDto;
    private CondicionPagoDto condicionPagoDto;
    private SelectItem[] siTiposValoracion;
    private SelectItem[] siTiposClFacturacion;
    private Boolean varlorTarifa;
    private Boolean varlorCondicion;
    //TERCERO CUENTA BANCARIA
    private TerceroCuentaBancariaDto terceroCuentaBancariaDto;
    private TerceroCuentaBancariaDto terceroCuentaBancariaEtitarEliminarDto;
    private List<TerceroCuentaBancariaDto> listaTerceroCuentaBancariaDto;
    //DESCUENTO
    private TerceroDescuentoDto terceroDescuentoDto;
    private TerceroDescuentoDto terceroDescuentoEliminarDto;
    private List<TerceroDescuentoDto> listaTerceroDescuento;
    private List<DescuentoDto> ListaDescuento;
    //DIRECCION
    private TerceroDireccionDto terceroDireccionDto;
    private TerceroDireccionDto terceroDireccionEliminarDto;
    private List<TerceroDireccionDto> listaTerceroDireccion;
    //PERSONA CONTACTO
    private TerceroPersonaContactoDto terceroPersonaContactoDto;
    private TerceroPersonaContactoDto terceroPersonaContactoDtoEliminarDto;
    private List<TerceroPersonaContactoDto> listaTerceroPersonaContacto;
    //CONDICION DE PAGO
    private List<CondicionPagoDto> listaCondicionPago;
    private String tipoAccionCuentaBancaria;
    private String tipoAccionDescuento;
    private String tipoAccionDireccion;
    private String tipoAccionPersonaContacto;
    private Boolean validarTerceroDetalleVentanaCliente = Boolean.FALSE;
    private Boolean validarTerceroDetalleVentanaProveedor = Boolean.FALSE;
    private int filtroSexo;
    private int filtroClinete;

    public TerceroMBean() {
        this.dtoFiltro = new TerceroDto();
    }

    public String iniciar() {
        this.lista = null;
        this.dto = null;
        this.dtoFiltro = new TerceroDto();
        this.dtoFiltro.setDescripcion("");
        this.dtoFiltro.setCliente(Boolean.TRUE);
        this.dtoFiltro.setProveedor(Boolean.TRUE);        
        this.dtoFiltro.setTipoDocumentoDto(new ParametroDto(parametroManager.getIdTodos()));
        this.condicionPagoDto = new CondicionPagoDto();
        this.terceroCuentaBancariaDto = new TerceroCuentaBancariaDto();
        this.terceroDescuentoDto = new TerceroDescuentoDto();
        this.terceroDireccionDto = new TerceroDireccionDto();       
        return manager.getUrlLista();
    }

    public String nuevo() {
        sessionMBean.setAccion(applicationMBean.getNuevo());
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyEntidad, sessionMBean.getAccion()));
        this.camposSegunTipoDocumento = false;
        this.dto = manager.inicializar();
        this.dto.setEmpresaDto(sessionMBean.getEmpresaDto());
        this.dto.setClCreditoLimite(BigDecimal.ZERO);
        this.dto.setClCreditoUsado(BigDecimal.ZERO);
        this.dto.setPaisDto(sessionMBean.getEmpresaDto().getPaisDto());
        return manager.getUrl();
    }

    public String editar() {
        sessionMBean.setAccion(applicationMBean.getEditar());
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyEntidad, sessionMBean.getAccion()));
        try {
            this.camposSegunTipoDocumento = verificarTipoDocumento(this.dto.getTipoDocumentoDto().getValorBoolean());
            this.dto = manager.obtenerPorId(this.dto.getId());

            this.cargarDetalleTerceroCuentaBancaria();
            this.terceroCuentaBancariaDto.setPais(sessionMBean.getEmpresaDto().getPaisDto());

            this.cargarDetalleTerceroDireccion();
            this.terceroDireccionDto.setUbigeoDto(sessionMBean.getEmpresaDto().getPaisDto());

            this.cargarDetalleTerceroDescuento();
            this.cargarDetalleTerceroPersonaContacto();

            this.cargarTipoAccionesDetalleTercero();

            this.validarVentanasClienteProveedor(this.dto);
            
            this.terceroDireccionDto.setPrincipal(Boolean.FALSE);
            
            if (!dto.getCliente()){
                this.dto.setGiroNegocioClienteDto(null);
            }
            if (!dto.getProveedor()){
                this.dto.setGiroNegocioProveedorDto(null);
            }

        } catch (DAOException ex) {
            logger.error(ex);
        }
        return manager.getUrl();
    }

    public void validarVentanasClienteProveedor(TerceroDto dtoVent) {
        validarTerceroDetalleVentanaCliente = Boolean.FALSE;
        validarTerceroDetalleVentanaProveedor = Boolean.FALSE;
        if (dtoVent.getCliente()) {
            validarTerceroDetalleVentanaCliente = Boolean.TRUE;
        }
        if (dtoVent.getProveedor()) {
            validarTerceroDetalleVentanaProveedor = Boolean.TRUE;
        }
    }

    public String ver() {
        sessionMBean.setAccion(applicationMBean.getVer());
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyEntidad, sessionMBean.getAccion()));
        try {
            this.camposSegunTipoDocumento = verificarTipoDocumento(this.dto.getTipoDocumentoDto().getValorBoolean());
            this.dto = manager.obtenerPorId(this.dto.getId());

            this.cargarDetalleTerceroCuentaBancaria();
            this.terceroCuentaBancariaDto.setPais(sessionMBean.getEmpresaDto().getPaisDto());

            this.cargarDetalleTerceroDireccion();
            this.terceroDireccionDto.setUbigeoDto(sessionMBean.getEmpresaDto().getPaisDto());

            this.cargarDetalleTerceroDescuento();
            this.cargarDetalleTerceroPersonaContacto();

            this.validarVentanasClienteProveedor(this.dto);

        } catch (DAOException ex) {
            logger.error(ex);
        }
        return manager.getUrl();
    }

    public void buscar() {
        try {
            this.lista = this.manager.obtener(this.dtoFiltro);
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void listarCamposSegunTipoDocumento() {
        this.camposSegunTipoDocumento = verificarTipoDocumento(this.dto.getTipoDocumentoDto().getValorBoolean());
        this.manager.limpiarCamposTerceros(this.dto);
    }

    public String guardar() {
        if (this.manager.validarCreditoLimiteUsusado(this.dto)) {
            if (manager.guardar(this.dto) != null) {
                this.editar();
            }
        }
        return null;
    }

    public String verPropietario() {
        sessionMBean.setEntidad(manager.getIdEntidad());
        sessionMBean.setRegistro(dto.getId());
        PropietarioMBean propietarioMBean = (PropietarioMBean) WebServletContextListener.getApplicationContext().getBean("propietarioMBean");
        propietarioMBean.setEmpresa(dto.getEmpresaDto().getId());
        propietarioMBean.cargarPropietariosRegistro();
        propietarioMBean.inicializarCampos();
        return null;
    }
    
    public String verBitacora() {
        bitacoraManager.cargarBitacoraEntidad(manager.getIdEntidad(), this.dto.getId());
        return null;
    }

    public Boolean verificarTipoDocumento(Boolean BooValor) {
        if (BooValor) {
            return true;
        }
        return false;
    }

    public void cargarTipoAccionesDetalleTercero() {
        this.tipoAccionCuentaBancaria = "/ NUEVO";
        this.tipoAccionDescuento = "/ NUEVO";
        this.tipoAccionDireccion = "/ NUEVO";
        this.tipoAccionPersonaContacto = "/ NUEVO";
    }

    public void cargarListaCalendarioFacturacion() {
        try {
            this.listaCalendarioFacturacion = this.calendarioFacturacionManager.obtenerActivosPorEmpresa(this.dto.getEmpresaDto());
            this.listaCalendarioFacturacion = this.manager.obtenerlistaCalendarioSeleccionado(this.listaCalendarioFacturacion, this.dto.getClCalendarioFacturacionDto());
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void agregarCalendarioFacturacion() {
        TerceroDto terc = new TerceroDto();
        terc = this.dto;
        terc.setClCalendarioFacturacionDto(this.calendarioFacturacionDto);
        this.manager.guardar(terc);
        this.cargarListaCalendarioFacturacion();
    }

    public void cargarListaTarifa(Boolean val) {
        try {
            this.varlorTarifa = val;
            this.listaTarifa = this.tarifaManager.obtenerActivosPorOrganizacion();
            if (val) {
                this.listaTarifa = this.manager.obtenerlistaTarifaSeleccionado(this.listaTarifa, this.dto.getClTarifaDto());
            } else {
                this.listaTarifa = this.manager.obtenerlistaTarifaSeleccionado(this.listaTarifa, this.dto.getPrTarifa());
            }
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void agregarTarifa(Boolean val) {
        TerceroDto terc = new TerceroDto();
        terc = this.dto;
        if (val) {
            terc.setClTarifaDto(this.tarifaDto);
        } else {
            terc.setPrTarifa(this.tarifaDto);
        }
        this.manager.guardar(terc);
        this.cargarListaTarifa(val);
    }

    public void cargarListaCondicionPago(Boolean val) {
        try {
            this.varlorCondicion = val;
            this.listaCondicionPago = this.condicionPagoManager.obtenerActivosPorEmpresa();
            if (val) {
                this.listaCondicionPago = this.manager.obtenerlistaCondicionPagoSeleccionado(this.listaCondicionPago, this.dto.getClCondicionPagoDto());
            } else {
                this.listaCondicionPago = this.manager.obtenerlistaCondicionPagoSeleccionado(this.listaCondicionPago, this.dto.getPrCondicionPago());
            }
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void agregarCondicionPago(Boolean val) {
        TerceroDto terc = new TerceroDto();
        terc = this.dto;
        if (val) {
            terc.setClCondicionPagoDto(this.condicionPagoDto);
        } else {
            terc.setPrCondicionPago(this.condicionPagoDto);
        }
        this.manager.guardar(terc);
        this.cargarListaCondicionPago(val);
    }

    public void guardarCondicionPago(Boolean val) {
        try {
            this.condicionPagoManager.guardarCondicionDesdeTercero(this.condicionPagoDto, this.dto, val);
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public List<TerceroDto> autoCompletarProveedor(String query) {
        List<TerceroDto> results = null;
        try {
            results = manager.autoCompletarProveedor(query);                        
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<TerceroDto>();
        }
        return results;
    }

    public List<TerceroDto> autoCompletarCliente(String query) {
        List<TerceroDto> results = null;
        try {
            results = manager.autoCompletarCliente(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<TerceroDto>();
        }
        return results;
    }

    public String verBitacoraCondicionPago() {
        bitacoraManager.cargarBitacoraEntidad(this.condicionPagoManager.getIdEntidad(), this.condicionPagoDto.getId());
        return null;
    }

    public String verBitacoraCuentaBancaria() {
        bitacoraManager.cargarBitacoraEntidad(this.terceroCuentaBancariaManager.getIdEntidad(), this.terceroCuentaBancariaDto.getId());
        return null;
    }

    public String verBitacoraDescuento() {
        bitacoraManager.cargarBitacoraEntidad(this.terceroDescuentoManager.getIdEntidad(), this.terceroDescuentoDto.getId());
        return null;
    }

    public String verBitacoraDireccion() {
        bitacoraManager.cargarBitacoraEntidad(this.terceroDireccionManager.getIdEntidad(), this.terceroDireccionDto.getId());
        return null;
    }

    public String verBitacoraPersonaContacto() {
        bitacoraManager.cargarBitacoraEntidad(this.terceroPersonaContactoManager.getIdEntidad(), this.terceroPersonaContactoDto.getId());
        return null;
    }

    public void cargarDetalleTerceroPersonaContacto() {
        try {
            this.terceroPersonaContactoDto = new TerceroPersonaContactoDto();
            this.terceroPersonaContactoDto.setTerceroDto(dto);
            this.terceroPersonaContactoDto.setEstado(Boolean.TRUE);
            this.tipoAccionPersonaContacto = "/ NUEVO";

            this.listaTerceroPersonaContacto = this.terceroPersonaContactoManager.obtenerActivosPorTercero(dto);

        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void cargarDetalleTerceroDireccion() {
        try {
            this.terceroDireccionDto = new TerceroDireccionDto();
            this.terceroDireccionDto.setTerceroDto(dto);
            this.terceroDireccionDto.setEstado(Boolean.TRUE);
            this.tipoAccionDireccion = "/ NUEVO";

            this.listaTerceroDireccion = this.terceroDireccionManager.obtenerActivosPorTercero(dto);

        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void cargarDetalleTerceroDescuento() {
        try {
            this.terceroDescuentoDto = new TerceroDescuentoDto();
            this.terceroDescuentoDto.setTerceroDto(dto);
            this.terceroDescuentoDto.setEstado(Boolean.TRUE);
            this.tipoAccionDescuento = "/ NUEVO";

            this.listaTerceroDescuento = this.terceroDescuentoManager.obtenerActivosPorTercero(dto);

        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void cargarDetalleTerceroCuentaBancaria() {
        try {
            this.terceroCuentaBancariaDto = new TerceroCuentaBancariaDto();
            this.terceroCuentaBancariaDto.setTerceroDto(dto);
            this.terceroCuentaBancariaDto.setEstado(Boolean.TRUE);
            this.tipoAccionCuentaBancaria = "/ NUEVO";

            this.listaTerceroCuentaBancariaDto = this.terceroCuentaBancariaManager.obtenerActivosPorTercero(this.dto);

        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void guardarCuentaBancaria() {
        this.terceroCuentaBancariaManager.guardar(this.terceroCuentaBancariaDto);
        cargarDetalleTerceroCuentaBancaria();
    }

    public void guardarDescuento() {
        this.terceroDescuentoManager.guardar(this.terceroDescuentoDto);
        cargarDetalleTerceroDescuento();
    }

    public void guardarDireccion() {
        this.terceroDireccionManager.guardar(this.terceroDireccionDto);
        cargarDetalleTerceroDireccion();
    }

    public void guardarPersonaContacto() {
        this.terceroPersonaContactoManager.guardar(this.terceroPersonaContactoDto);
        cargarDetalleTerceroPersonaContacto();
    }

    public void eliminarCuentaBancaria() {
        try {
            this.terceroCuentaBancariaEtitarEliminarDto.setEstado(Boolean.FALSE);
            this.terceroCuentaBancariaManager.editar(this.terceroCuentaBancariaEtitarEliminarDto);
            cargarDetalleTerceroCuentaBancaria();
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void eliminarDescuento() {
        try {
            this.terceroDescuentoEliminarDto.setEstado(Boolean.FALSE);
            this.terceroDescuentoManager.editar(this.terceroDescuentoEliminarDto);
            cargarDetalleTerceroDescuento();
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void eliminarDireccion() {
        try {
            this.terceroDireccionEliminarDto.setEstado(Boolean.FALSE);
            this.terceroDireccionManager.editar(this.terceroDireccionEliminarDto);
            cargarDetalleTerceroDireccion();
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void eliminarPersonaContacto() {
        try {
            this.terceroPersonaContactoDtoEliminarDto.setEstado(Boolean.FALSE);
            this.terceroPersonaContactoManager.editar(this.terceroPersonaContactoDtoEliminarDto);
            cargarDetalleTerceroPersonaContacto();
        } catch (DAOException ex) {
            showError("ERROR_SISTEMA", ex.getMessage());
        }
    }

    public void editarCuentaBancaria() {
        this.terceroCuentaBancariaDto = terceroCuentaBancariaEtitarEliminarDto;
        this.tipoAccionCuentaBancaria = "/ EDITAR /";
    }

    public void editarDescuento() {
        this.terceroDescuentoDto = terceroDescuentoEliminarDto;
        this.tipoAccionDescuento = "/ EDITAR /";

    }

    public void editarDireccion() {
        this.terceroDireccionDto = terceroDireccionEliminarDto;
        this.tipoAccionDireccion = "/ EDITAR /";

    }

    public void editarPersonaContacto() {
        this.terceroPersonaContactoDto = terceroPersonaContactoDtoEliminarDto;
        this.tipoAccionPersonaContacto = "/ EDITAR /";
    }
    
    public List<UbigeoDto> autoCompletarUbigeo(String query) throws DAOException{
        List<UbigeoDto> results = null;
        try {
            results = this.ubigeoManager.autoCompletarUbigeo(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<UbigeoDto>();
        }
        return results;
    }
    
    public List<ParametroDto> getListaGiroNegocio() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoGiroNegocio());
    }

    public String retroceder() {
        buscar();
        return manager.getUrlLista();
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        TerceroMBean.logger = logger;
    }

    public TerceroManager getManager() {
        return manager;
    }

    public void setManager(TerceroManager manager) {
        this.manager = manager;
    }

    public BitacoraManager getBitacoraManager() {
        return bitacoraManager;
    }

    public void setBitacoraManager(BitacoraManager bitacoraManager) {
        this.bitacoraManager = bitacoraManager;
    }

    public RecursosManager getRecursosManager() {
        return recursosManager;
    }

    public void setRecursosManager(RecursosManager recursosManager) {
        this.recursosManager = recursosManager;
    }

    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }

    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public List<TerceroDto> getLista() {
        return lista;
    }

    public void setLista(List<TerceroDto> lista) {
        this.lista = lista;
    }

    public TerceroDto getDto() {
        return dto;
    }

    public void setDto(TerceroDto dto) {
        this.dto = dto;
    }

    public TerceroDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(TerceroDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public String getKeyEntidad() {
        return keyEntidad;
    }

    public void setKeyEntidad(String keyEntidad) {
        this.keyEntidad = keyEntidad;
    }

    public List<ParametroDto> getListaDocumentos() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoTipoDocumento());
    }

    public void setListaDocumentos(List<ParametroDto> listaDocumentos) {
        this.listaDocumentos = listaDocumentos;
    }

    public Boolean getCamposSegunTipoDocumento() {
        return camposSegunTipoDocumento;
    }

    public void setCamposSegunTipoDocumento(Boolean camposSegunTipoDocumento) {
        this.camposSegunTipoDocumento = camposSegunTipoDocumento;
    }

    public List<UbigeoDto> getListaPaises() {
        UbigeoManager m = (UbigeoManager) WebServletContextListener.getApplicationContext().getBean("ubigeoManager");
        try {
            return m.obtenerPaisesActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<UbigeoDto>();
        }
    }

    public void setListaPaises(List<UbigeoDto> listaPaises) {
        this.listaPaises = listaPaises;
    }

    public List<ParametroDto> getListaEstados() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoEstado());
    }

    public void setListaEstados(List<ParametroDto> listaEstados) {
        this.listaEstados = listaEstados;
    }

    public SelectItem[] getSiTiposValoracion() {
        return this.recursosManager.siTipoValoracion();
    }

    public void setSiTiposValoracion(SelectItem[] siTiposValoracion) {
        this.siTiposValoracion = siTiposValoracion;
    }

    public SelectItem[] getSiTiposClFacturacion() {
        return this.recursosManager.siTipoClFacturacion();
    }

    public void setSiTiposClFacturacion(SelectItem[] siTiposClFacturacion) {
        this.siTiposClFacturacion = siTiposClFacturacion;
    }

    public List<CalendarioFacturacionDto> getListaCalendarioFacturacion() {
        return listaCalendarioFacturacion;
    }

    public void setListaCalendarioFacturacion(List<CalendarioFacturacionDto> listaCalendarioFacturacion) {
        this.listaCalendarioFacturacion = listaCalendarioFacturacion;
    }

    public CalendarioFacturacionDto getCalendarioFacturacionDto() {
        return calendarioFacturacionDto;
    }

    public void setCalendarioFacturacionDto(CalendarioFacturacionDto calendarioFacturacionDto) {
        this.calendarioFacturacionDto = calendarioFacturacionDto;
    }

    public List<TarifaDto> getListaTarifa() {
        return listaTarifa;
    }

    public void setListaTarifa(List<TarifaDto> listaTarifa) {
        this.listaTarifa = listaTarifa;
    }

    public TarifaDto getTarifaDto() {
        return tarifaDto;
    }

    public void setTarifaDto(TarifaDto tarifaDto) {
        this.tarifaDto = tarifaDto;
    }

    public List<ParametroDto> getListaFormaPago() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoFormaPago());
    }

    public void setListaFormaPago(List<ParametroDto> listaFormaPago) {
        this.listaFormaPago = listaFormaPago;
    }

    public CondicionPagoDto getCondicionPagoDto() {
        return condicionPagoDto;
    }

    public void setCondicionPagoDto(CondicionPagoDto condicionPagoDto) {
        this.condicionPagoDto = condicionPagoDto;
    }

    public Boolean getVarlorTarifa() {
        return varlorTarifa;
    }

    public void setVarlorTarifa(Boolean varlorTarifa) {
        this.varlorTarifa = varlorTarifa;
    }

    public Boolean getVarlorCondicion() {
        return varlorCondicion;
    }

    public void setVarlorCondicion(Boolean varlorCondicion) {
        this.varlorCondicion = varlorCondicion;
    }

    public TerceroCuentaBancariaDto getTerceroCuentaBancariaDto() {
        return terceroCuentaBancariaDto;
    }

    public void setTerceroCuentaBancariaDto(TerceroCuentaBancariaDto terceroCuentaBancariaDto) {
        this.terceroCuentaBancariaDto = terceroCuentaBancariaDto;
    }

    public List<TerceroCuentaBancariaDto> getListaTerceroCuentaBancariaDto() {
        return listaTerceroCuentaBancariaDto;
    }

    public void setListaTerceroCuentaBancariaDto(List<TerceroCuentaBancariaDto> listaTerceroCuentaBancariaDto) {
        this.listaTerceroCuentaBancariaDto = listaTerceroCuentaBancariaDto;
    }

    public List<ParametroDto> getListaTipoCuentaBancaria() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoTipoCuentaBancaria());
    }

    public void setListaTipoCuentaBancaria(List<ParametroDto> listaTipoCuentaBancaria) {
        this.listaTipoCuentaBancaria = listaTipoCuentaBancaria;
    }

    public List<DescuentoDto> getListaDescuento() {
        DescuentoManager managerDescuento = (DescuentoManager) WebServletContextListener.getApplicationContext().getBean("descuentoManager");
        List<DescuentoDto> m = new ArrayList<DescuentoDto>();
        try {
            m.addAll(managerDescuento.obtenerTodos());
            //return m.obtenerPaisesActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<DescuentoDto>();
        }
        return m;
    }

    public void setListaDescuento(List<DescuentoDto> ListaDescuento) {
        this.ListaDescuento = ListaDescuento;
    }

    public List<ParametroDto> getListaTipoMoneda() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(catalogoManager.getIdCatalogoTipoMoneda());
    }

    public void setListaTipoMoneda(List<ParametroDto> listaTipoMoneda) {
        this.listaTipoMoneda = listaTipoMoneda;
    }

    public TerceroCuentaBancariaDto getTerceroCuentaBancariaEtitarEliminarDto() {
        return terceroCuentaBancariaEtitarEliminarDto;
    }

    public void setTerceroCuentaBancariaEtitarEliminarDto(TerceroCuentaBancariaDto terceroCuentaBancariaEtitarEliminarDto) {
        this.terceroCuentaBancariaEtitarEliminarDto = terceroCuentaBancariaEtitarEliminarDto;
    }

    public TerceroDescuentoDto getTerceroDescuentoDto() {
        return terceroDescuentoDto;
    }

    public void setTerceroDescuentoDto(TerceroDescuentoDto terceroDescuentoDto) {
        this.terceroDescuentoDto = terceroDescuentoDto;
    }

    public TerceroDescuentoDto getTerceroDescuentoEliminarDto() {
        return terceroDescuentoEliminarDto;
    }

    public void setTerceroDescuentoEliminarDto(TerceroDescuentoDto terceroDescuentoEliminarDto) {
        this.terceroDescuentoEliminarDto = terceroDescuentoEliminarDto;
    }

    public List<TerceroDescuentoDto> getListaTerceroDescuento() {
        return listaTerceroDescuento;
    }

    public void setListaTerceroDescuento(List<TerceroDescuentoDto> listaTerceroDescuento) {
        this.listaTerceroDescuento = listaTerceroDescuento;
    }

    public TerceroDireccionDto getTerceroDireccionDto() {
        return terceroDireccionDto;
    }

    public void setTerceroDireccionDto(TerceroDireccionDto terceroDireccionDto) {
        this.terceroDireccionDto = terceroDireccionDto;
    }

    public TerceroDireccionDto getTerceroDireccionEliminarDto() {
        return terceroDireccionEliminarDto;
    }

    public void setTerceroDireccionEliminarDto(TerceroDireccionDto terceroDireccionEliminarDto) {
        this.terceroDireccionEliminarDto = terceroDireccionEliminarDto;
    }

    public List<TerceroDireccionDto> getListaTerceroDireccion() {
        return listaTerceroDireccion;
    }

    public void setListaTerceroDireccion(List<TerceroDireccionDto> listaTerceroDireccion) {
        this.listaTerceroDireccion = listaTerceroDireccion;
    }

    public TerceroPersonaContactoDto getTerceroPersonaContactoDto() {
        return terceroPersonaContactoDto;
    }

    public void setTerceroPersonaContactoDto(TerceroPersonaContactoDto terceroPersonaContactoDto) {
        this.terceroPersonaContactoDto = terceroPersonaContactoDto;
    }

    public TerceroPersonaContactoDto getTerceroPersonaContactoDtoEliminarDto() {
        return terceroPersonaContactoDtoEliminarDto;
    }

    public void setTerceroPersonaContactoDtoEliminarDto(TerceroPersonaContactoDto terceroPersonaContactoDtoEliminarDto) {
        this.terceroPersonaContactoDtoEliminarDto = terceroPersonaContactoDtoEliminarDto;
    }

    public List<TerceroPersonaContactoDto> getListaTerceroPersonaContacto() {
        return listaTerceroPersonaContacto;
    }

    public void setListaTerceroPersonaContacto(List<TerceroPersonaContactoDto> listaTerceroPersonaContacto) {
        this.listaTerceroPersonaContacto = listaTerceroPersonaContacto;
    }

    public String getTipoAccionCuentaBancaria() {
        return tipoAccionCuentaBancaria;
    }

    public void setTipoAccionCuentaBancaria(String tipoAccionCuentaBancaria) {
        this.tipoAccionCuentaBancaria = tipoAccionCuentaBancaria;
    }

    public String getTipoAccionDescuento() {
        return tipoAccionDescuento;
    }

    public void setTipoAccionDescuento(String tipoAccionDescuento) {
        this.tipoAccionDescuento = tipoAccionDescuento;
    }

    public String getTipoAccionDireccion() {
        return tipoAccionDireccion;
    }

    public void setTipoAccionDireccion(String tipoAccionDireccion) {
        this.tipoAccionDireccion = tipoAccionDireccion;
    }

    public String getTipoAccionPersonaContacto() {
        return tipoAccionPersonaContacto;
    }

    public void setTipoAccionPersonaContacto(String tipoAccionPersonaContacto) {
        this.tipoAccionPersonaContacto = tipoAccionPersonaContacto;
    }

    public Boolean getValidarTerceroDetalleVentanaCliente() {
        return validarTerceroDetalleVentanaCliente;
    }

    public void setValidarTerceroDetalleVentanaCliente(Boolean validarTerceroDetalleVentanaCliente) {
        this.validarTerceroDetalleVentanaCliente = validarTerceroDetalleVentanaCliente;
    }

    public Boolean getValidarTerceroDetalleVentanaProveedor() {
        return validarTerceroDetalleVentanaProveedor;
    }

    public void setValidarTerceroDetalleVentanaProveedor(Boolean validarTerceroDetalleVentanaProveedor) {
        this.validarTerceroDetalleVentanaProveedor = validarTerceroDetalleVentanaProveedor;
    }

    public List<CondicionPagoDto> getListaCondicionPago() {
        return listaCondicionPago;
    }

    public void setListaCondicionPago(List<CondicionPagoDto> listaCondicionPago) {
        this.listaCondicionPago = listaCondicionPago;
    }

    public List<ParametroDto> getListaDocumentosFiltro() {
        //return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaFiltro(this.manager.getIdCatalogoTipoDocumento());
        return this.catalogoManager.obtenerParametrosActivosPorCatalogoAdd(catalogoManager.getIdCatalogoTipoDocumento(), parametroManager.getIdTodos());
    }

    public void setListaDocumentosFiltro(List<ParametroDto> listaDocumentosFiltro) {
        this.listaDocumentosFiltro = listaDocumentosFiltro;
    }

    public List<UbigeoDto> getListaPaisesFiltro() {
        UbigeoManager managerUbigeo = (UbigeoManager) WebServletContextListener.getApplicationContext().getBean("ubigeoManager");
        List<UbigeoDto> m = new ArrayList<UbigeoDto>();
        try {
            UbigeoDto dtoPais = new UbigeoDto();
            dtoPais.setId(0L);
            dtoPais.setDescripcion("*");
            m.add(dtoPais);
            m.addAll(managerUbigeo.obtenerPaisesActivos());
            //return m.obtenerPaisesActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<UbigeoDto>();
        }
        return m;
    }

    public void setListaPaisesFiltro(List<UbigeoDto> listaPaisesFiltro) {
        this.listaPaisesFiltro = listaPaisesFiltro;
    }

    public int getFiltroSexo() {
        return filtroSexo;
    }

    public void setFiltroSexo(int filtroSexo) {
        this.filtroSexo = filtroSexo;
    }

    public int getFiltroClinete() {
        return filtroClinete;
    }

    public void setFiltroClinete(int filtroClinete) {
        this.filtroClinete = filtroClinete;
    }
}
